package com.gd.iot.energy.service.systemadmin;

import com.gd.iot.energy.po.systemadmin.AreaArchivesPO;
import com.gd.iot.energy.pojo.common.vo.PageVO;
import com.gd.iot.energy.pojo.datamanage.vo.RemotePageVO;
import com.gd.iot.energy.pojo.systemadmin.dto.ArchivesSaveDTO;
import com.gd.iot.energy.pojo.systemadmin.dto.AreaArchivesSaveDTO;
import com.gd.iot.energy.pojo.systemadmin.vo.*;

import java.util.List;
import java.util.Map;

/**
 * @author kris
 * @date 2020/8/28 0028 11:22
 */
public interface AreaArchivesService {

    /**
     * 获取当前用户的档案
     * @return
     * @param customerName
     * @param customerPhone
     * @param areaId
     * @param pageSize
     * @param pageNum
     * @param orderColumn
     * @param orderType
     */
    PageVO<RemotePageVO> getCurrentUserArchivesPage(String customerName, String customerPhone, Integer areaId, Integer pageSize, Integer pageNum, String orderColumn, String orderType);

    /**
     * 开阀
     * @param id
     */
    void open(String id);

    /**
     * 关阀
     * @param id
     */
    void close(String id);

    /**
     * 批量关阀
     * @param ids
     * @param state
     */
    void multiOperate(List<Long> ids,String state);

    /**
     * 通过设备id获取档案
     * @param deviceId
     * @return
     */
    AreaArchivesPO getByDeviceId(String deviceId);

    /**
     * 通过imei获取档案
     * @param imei
     * @return
     */
    AreaArchivesPO getByImei(String imei);

    /**
     * 获取列表
     * @param areaOrg
     * @param customerName
     * @return
     */
    List<ArchivesVO> getArchivesVOs(Long areaOrg, String customerName);

    /**
     * 获取分页数据
     * @param areaOrg
     * @param filterType
     * @param pageSize
     * @param pageNo
     * @param orderColumn
     * @param orderType
     * @return
     */
    PageVO<ArchivesPageVO> getArchivesPageVOs(Long areaOrg, Integer filterType, String filterValue,
                                              Integer pageSize, Integer pageNo, String orderColumn, String orderType);

    /**
     * 新增表计
     * @param archivesSaveDTO
     * @return
     */
    Long add(ArchivesSaveDTO archivesSaveDTO);

    /**
     * 更新表计
     * @param archivesSaveDTO
     * @return
     */
    boolean update(ArchivesSaveDTO archivesSaveDTO);

    /**
     * 删除表计
     * @param ids
     * @return
     */
    boolean delete(List<Integer> ids);

    /**
     * 根据id获取表计
     * @param id
     * @return
     */
    ArchivesSaveDTO getArchives(Integer id);

    /**
     * 获取通信协议
     * @return
     */
    Map<String, List<EnumVO>> getEnums();
}
